home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Purity
/
Purity #48 (1995-06-25)(PackMAN)(DE)[WB].zip
/
Purity #48 (1995-06-25)(PackMAN)(DE)[WB].adf
/
Konverter
/
HexStr2Long.p
< prev
next >
Wrap
Text File
|
1995-06-24
|
1KB
|
69 lines
{ konvertiert Hexstrings in Longzahlen }
{ by Sebastian Erbert 6/95 }
{ Stringformat: C (0x????) oder normal (aber ohne $) }
{ note: nicht perfekt, aber es funktioniert }
FUNCTION HexStrToLong(HexStr: String): LongInt;
VAR i,k:Integer;
l: LongInt;
c: Char;
f: Array [-8..8] OF ShortInt;
NixHexZahl: Boolean;
BEGIN
NixHexZahl:=FALSE;
FOR i:=1 TO StrLen(HexStr) DO HexStr[i]:=UpCase(HexStr[i]);
i:=Pos("X",HexStr);
IF i=2 THEN Delete(HexStr,1,2);
FOR i:=-8 TO 8 DO f[i]:=0;
FOR i:=1 TO StrLen(HexStr) DO BEGIN
c:=HexStr[i];
k:=ORD(c);
CASE k OF
48: f[i]:=00;
49: f[i]:=01;
50: f[i]:=02;
51: f[i]:=03;
52: f[i]:=04;
53: f[i]:=05;
54: f[i]:=06;
55: f[i]:=07;
56: f[i]:=08;
57: f[i]:=09;
65: f[i]:=10;
66: f[i]:=11;
67: f[i]:=12;
68: f[i]:=13;
69: f[i]:=14;
70: f[i]:=15;
OTHERWISE NixHexZahl:=TRUE;
END;
END;
k:=StrLen(HexStr);
l:=f[k];
l:=l+(f[k-1] SHL 04)+(f[k-2] SHL 08)+(f[k-3] SHL 12)+(f[k-4] SHL 16)+
(f[k-5] SHL 20)+(f[k-6] SHL 24)+(f[k-7] SHL 28);
{ dito:
l:=f[k]+f[k-1]*16+f[k-2]*16*16+f[k-3]*16*16*16+f[k-4]*16*16*16*16+
f[k-5]*16*16*16*16*16+f[k-6]*16*16*16*16*16*16+
f[k-7]*16*16*16*16*16*16*16;
}
IF NixHexZahl THEN l:=-1;
HexStrToLong:=l;
END;
begin
writeln(hexstrtolong("f"));
writeln(hexstrtolong("0x20"));
writeln(hexstrtolong("69024"));
writeln(hexstrtolong("69"));
writeln(hexstrtolong("h7"));
end.